""" функции загрузки файлов плагинов """

import os
import traceback
from importlib import util


def load_module(path: str):
    """загрузка python модуля

    Args:
        path (str): имя файла
    """
    name = os.path.split(path)[-1]
    spec = util.spec_from_file_location(name, path)
    module = util.module_from_spec(spec)
    spec.loader.exec_module(module)
    return module


def load_plugins(init_filepath: str):
    """Загрузка плагинов из пакета

    Args:
        init_filepath (str): имя `__init__.py` файла пакета
    """
    dirpath = os.path.dirname(os.path.abspath(init_filepath))
    for fname in os.listdir(dirpath):
        if (
            not fname.startswith(".")
            and not fname.startswith("__")
            and fname.endswith(".py")
        ):
            try:
                load_module(os.path.join(dirpath, fname))
            except Exception:
                traceback.print_exc()
